package vip.xiaonuo.smzq.modular.kcl.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
import vip.xiaonuo.smzq.modular.dictionary.entity.vo.DirTree;
import vip.xiaonuo.smzq.modular.hisi.entity.vo.CxtjMhtj;
import vip.xiaonuo.smzq.modular.kcl.entity.Ks;
import vip.xiaonuo.smzq.modular.kcl.entity.param.XzqhCxtj;
import vip.xiaonuo.smzq.modular.kcl.entity.vo.HomeRelated;
import vip.xiaonuo.smzq.modular.kcl.entity.vo.KsCxtj;
import vip.xiaonuo.smzq.modular.kcl.entity.vo.KsDetails;
import vip.xiaonuo.smzq.modular.psba.entity.vo.PsbaXqVo;
import vip.xiaonuo.smzq.modular.kcl.entity.vo.KsAutocompleteVo;

import java.util.List;

/**
 * 矿山基本信息 服务类
 *
 * @author eomer
 * @since 2024-02-22
 */
public interface IKsService extends IService<Ks> {

    Page<Ks> page(Ks ks);

    List<KsAutocompleteVo> autocompleteKsList(String ksmc, Integer nd, String flag);

    /**
     * 矿山基本信息目录树
     */
    List<DirTree> ksDirTreelist(Integer xzqhDm, Integer nd);

    /**
     * 审核列表
     *
     * @param user 用户
     * @Author yxt
     * @since 2024-02-28
     */
    Page<Ks> auditList(SaBaseLoginUser user);

    /**
     * 审核
     *
     * @param ksId     矿山基本信息id
     * @param result   审核结果
     * @param opinions 审核意见
     * @param user     用户
     * @Author yxt
     * @since 2024-02-28
     */
    String audit(String ksId, Integer result, String opinions, SaBaseLoginUser user);

    /**
     * 提交审核
     *
     * @param ksId 矿山基本信息id
     * @param user 用户
     * @Author yxt
     * @since 2024-02-28
     */
    String submitAudit(String ksId, SaBaseLoginUser user);

    /**
     * 矿山基本信息及其关联
     */
    KsDetails getKsDetails(Integer nd, String kqbm, Integer djflbm);

    /**
     * 添加矿山基本信息及其关联
     */
    String addKsDetails(KsDetails ksDetails);

    HomeRelated getHomeRelated(Integer nd);

    List<Ks> selectList(QueryWrapper<Ks> queryWrapperKs);

    Page<KsCxtj> getKspage(CxtjMhtj cxtjMhtj);

    Boolean generateAnnualReportTask(Integer nd, String kqbm, Integer djflbm);

    /**
     * 根据许可证号获取矿山基本信息及其关联
     *
     * @Param 许可证号 xkzh
     */
    PsbaXqVo getKs(String xkzh);

    String saveKsDetails(KsDetails ksDetails);

    List<String> filterXzqh(XzqhCxtj xzqhCxtj);

    List<DirTree> ksDirTreelistNew(XzqhCxtj xzqhCxtj);

    void insertKs(Ks ks, MultipartFile file);

    void deleteKs(Ks ks);
}
